home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / scripts / genksyms / genksyms.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  2.4 KB  |  83 lines

  1. /* Generate kernel symbol version hashes.
  2.    Copyright 1996, 1997 Linux International.
  3.  
  4.    New implementation contributed by Richard Henderson <rth@tamu.edu>
  5.    Based on original work by Bjorn Ekwall <bj0rn@blox.se>
  6.  
  7.    This file is part of the Linux modutils.
  8.  
  9.    This program is free software; you can redistribute it and/or modify it
  10.    under the terms of the GNU General Public License as published by the
  11.    Free Software Foundation; either version 2 of the License, or (at your
  12.    option) any later version.
  13.  
  14.    This program is distributed in the hope that it will be useful, but
  15.    WITHOUT ANY WARRANTY; without even the implied warranty of
  16.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  17.    General Public License for more details.
  18.  
  19.    You should have received a copy of the GNU General Public License
  20.    along with this program; if not, write to the Free Software Foundation,
  21.    Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
  22.  
  23. #ifndef MODUTILS_GENKSYMS_H
  24. #define MODUTILS_GENKSYMS_H 1
  25.  
  26. #include <stdio.h>
  27.  
  28. enum symbol_type {
  29.     SYM_NORMAL, SYM_TYPEDEF, SYM_ENUM, SYM_STRUCT, SYM_UNION
  30. };
  31.  
  32. struct string_list {
  33.     struct string_list *next;
  34.     enum symbol_type tag;
  35.     char *string;
  36. };
  37.  
  38. struct symbol {
  39.     struct symbol *hash_next;
  40.     const char *name;
  41.     enum symbol_type type;
  42.     struct string_list *defn;
  43.     struct symbol *expansion_trail;
  44.     struct symbol *visited;
  45.     int is_extern;
  46. };
  47.  
  48. typedef struct string_list **yystype;
  49. #define YYSTYPE yystype
  50.  
  51. extern int cur_line;
  52. extern char *cur_filename;
  53.  
  54. struct symbol *find_symbol(const char *name, enum symbol_type ns);
  55. struct symbol *add_symbol(const char *name, enum symbol_type type,
  56.               struct string_list *defn, int is_extern);
  57. void export_symbol(const char *);
  58.  
  59. void free_node(struct string_list *list);
  60. void free_list(struct string_list *s, struct string_list *e);
  61. struct string_list *copy_node(struct string_list *);
  62.  
  63. int yylex(void);
  64. int yyparse(void);
  65.  
  66. void error_with_pos(const char *, ...);
  67.  
  68. /*----------------------------------------------------------------------*/
  69. #define xmalloc(size) ({ void *__ptr = malloc(size);        \
  70.     if(!__ptr && size != 0) {                \
  71.         fprintf(stderr, "out of memory\n");        \
  72.         exit(1);                    \
  73.     }                            \
  74.     __ptr; })
  75. #define xstrdup(str)  ({ char *__str = strdup(str);        \
  76.     if (!__str) {                        \
  77.         fprintf(stderr, "out of memory\n");        \
  78.         exit(1);                    \
  79.     }                            \
  80.     __str; })
  81.  
  82. #endif                /* genksyms.h */
  83.